## The function coarse_period(f,q)

from PyM import *

def coarse_period(f,q):
    x = variable(f)
    r = degree(f)
    if is_irreducible(f,K_(f)):
        return period(f)
    for e in range(r,q**r):
        if (x**e-1) % f == 0:
            return e 

# Examples

u = 1>>Zn(2)

[_,X] = polynomial_ring(Zn(2),'X')

cp1 = coarse_period(X**2+X+u,2)

show(cp1)

cp2 = coarse_period(X**10+X**9+X**3+X**2+u,2)

show(cp2)

[_,X] = polynomial_ring(Zn(3), 'X')

u = 1>>Zn(3)

f = X**4+X-u

Q = is_irreducible(f,Zn(3))

p1 = period(f)

p2 = coarse_period(f,3)

show(p1,p2)
